/*citys*/
/* levels re:[{ele:'#xx',nameTo:'#yy'}]*/
/*callback callback(val,_name,obj) 回调4，  nameTo name记录到*/

    //插件的默认值属性
    var defaults = {
    		option:'<option></option>',
    		node:'0',
    		defaultText:'请选择',
    		defclass:'city-select',
    		selClass:'city-node',
    		selectedClass:'city-selected',
    		levels:[]
    };
    //
    var load_node = function(obj,_code){
    	//如果用户仍然点击了请选择,则不请求后台
    	if(_code == -1){
    		return;
		}
    	$(obj).html('');
    	//给默认值
        var _op = $(defaults.option);
        	_op.attr('value','-1');
        	_op.addClass(defaults.selClass);
        	_op.html(defaults.defaultText);
        	$(obj).append(_op);
    	$.ajax({
    		url:'/dictArea/findDictArea',
			data:{parentCode:_code},
    		dataType:'json',
    		cache:false,
    		success:function(data){
    			if(data.errCode == 0){
    				var _objval =  $(obj).attr('data-value');
    				var _objname =  $(obj).attr('data-name');
    				var arr = data.result.list;
    				$.each(arr,function(i,n){
    					var $_op = $(defaults.option);
                        $_op.attr('value',n.nodeCode);
                        $_op.addClass(defaults.selClass);
                        $_op.html(n.nodeName);
    					if(_objval){
    						if(n.nodeCode == _objval){
                                $_op.prop('selected',true);
    						}
    					}else if(_objname){
    						if(n.name == _objname){
                                $_op.prop('selected',true);
    						}
    					}
    					$(obj).append($_op);
    				});

    			}
    		}
    	});
    };
    
    var bind_event = function() {
    	if($(defaults.option).is('option')){
    		$(document).on('change','.'+defaults.defclass,function(){
    			var _ele = $(this);
    			var _name = _ele.find('option[value="'+_ele.val()+'"]').html();
    			select_event(_ele,_ele.val(),_name);
    		});
    	}else{
    		$('.'+defaults.defclass).on('click','.'+defaults.selClass,function(){
    			var _$this = $(this);
    			select_event(_$this.parents('.'+defaults.defclass),_$this.attr('value'),_$this.html());
    		});
    	}
	};
    
    var select_event = function(obj,val,_name){
    	var _level = obj.attr('level');
    	_level = parseInt(_level);
    	if(_level==0){
    		if(defaults.nameTo){
    			var $nameto = $(defaults.nameTo)
    			if($nameto.is('input')){
    				$nameto.val(_name);
    			}else{
    				$nameto.html(_name);
    			}
    		}
    	}else{
    		var _presel = defaults.levels[(_level-1)];
    		if(_presel.nameTo){
    			var _$nameto = $(_presel.nameTo);
    			if(_$nameto.is('input')){
    				_$nameto.val(_name);
    			}else{
    				_$nameto.html(_name);
    			}
    		}
    	}
    	if(defaults.levels.length > _level){
    		var cursel = defaults.levels[_level];
        	if(cursel){
        		$(cursel.ele).addClass(defaults.defclass);
        		$(cursel.ele).attr('level',++_level);
        		load_node(cursel.ele,val);
        	}
    	}
    	if(defaults.callback && defaults.callback instanceof Function){
    		defaults.callback(val,_name,obj);
    	}
    };
    
    var init = function (obj) {
    	$(obj).addClass(defaults.defclass);
    	$(obj).attr('level','0');
    	if(defaults.node){
    		load_node(obj,defaults.node);
    	}
    };
    var isString = function(str){
    	return (typeof str=='string')&&str.constructor==String; 
    	};
    //扩展方法
    $.fn.selectCity = function (options) {
    	if(isString(options)){
    		load_node(this,options);
    		return;
    	}
        //合并用户自定义属性，默认属性
        var options = $.extend(defaults, options);
        //step5 支持链式调用
        return this.each(function () {
        	bind_event();
            init(this);
        });
    }
